home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright 1993, 1994, Silicon Graphics, Inc.
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
- * the contents of this file may not be disclosed to third parties, copied or
- * duplicated in any form, in whole or in part, without the prior written
- * permission of Silicon Graphics, Inc.
- *
- * RESTRICTED RIGHTS LEGEND:
- * Use, duplication or disclosure by the Government is subject to restrictions
- * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
- * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
- * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
- * rights reserved under the Copyright Laws of the United States.
- */
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/mman.h>
- #include <fcntl.h>
- #include <sys/IP5.h>
- #include <sys/syssgi.h>
-
- extern int errno;
- unsigned *clockaddr, resolution;
- /*****************************************************************************/
- /*
-
- */
- double io4clock()
- {
-
- static int first = 1;
- int filed;
- unsigned int phys_addr;
-
-
- if (first) {
-
- first = 0;
-
- /* Open memory special device */
- if ( (filed = open("/dev/mmem",O_RDONLY)) == -1) {
- perror ("ERROR in open"); exit(errno);
- }
-
- /* Query for physical address of HW counter */
- phys_addr = syssgi(SGI_QUERY_CYCLECNTR, &resolution);
- /* Map high resolution clock to user space */
- if ( ((int)(clockaddr = mmap(0, 8, PROT_READ, MAP_PRIVATE, filed, phys_addr))) == -1) {
- perror ("ERROR in mmap"); exit(errno);
- }
- clockaddr+=1;
- }
-
- return ((double)(*clockaddr) * resolution * 1.e-12);
- }
-
- double io4clock_()
- {
- return (io4clock());
- }
-
- float second_()
- {
- return ((float)io4clock());
- }
-
-